Non-Blocking Concurrent Imperative Programming with Session Types
نویسندگان
چکیده
Concurrent C0 is an imperative programming language in the C family with session-typed messagepassing concurrency. The previously proposed semantics implements asynchronous (non-blocking) output; we extend it here with non-blocking input. A key idea is to postpone message reception as much as possible by interpreting receive commands as a request for a message. We implemented our ideas as a translation from a blocking intermediate language to a non-blocking language. Finally, we evaluated our techniques with several benchmark programs and show the results obtained. While the abstract measure of span always decreases (or remains unchanged), only a few of the examples reap a practical benefit.
منابع مشابه
Using session types as an effect system
Side effects are a core part of practical programming. However, they are often hard to reason about, particularly in a concurrent setting. We propose a foundation for reasoning about concurrent side effects using sessions. Primarily, we show that session types are expressive enough to encode an effect system for stateful processes. This is formalised via an effect-preserving encoding of a simpl...
متن کاملOn asynchronous eventful session semantics
Event-driven programming is one of the major paradigms in concurrent and communication-based programming, where events are typically detected as the arrival of messages on asynchronous channels. Unfortunately, the flexibility and performance of traditional event-driven programming come at the cost of more complex programs: low-level APIs and the obfuscation of event-driven control flow make pro...
متن کاملA Session Object Calculus for Structured Communication-Based Programming
We present an object calculus for structured concurrent programming, facilitating the implementation of typed binary protocols, known as sessions. Session types are based on a concept of duality of interactions, providing a powerful type-theoretic foundation for guaranteeing well-behaved parallel composition of communicating code. Our formalism extends the Abadi and Cardelli imperative object c...
متن کاملSafe Non-blocking Synchronization in Ada 202x
The mutual-exclusion property of locks stands in the way to scalability of parallel programs on many-core architectures. Locks do not allow progress guarantees, because a task may fail inside a critical section and keep holding a lock that blocks other tasks from accessing shared data. With non-blocking synchronization, the drawbacks of locks are avoided by synchronizing access to shared data b...
متن کاملLightweight Functional Session Types
Row types provide an account of extensibility that combines well with parametric polymorphism and type inference. We discuss the integration of row types and session types in a concurrent functional programming language, and how row types can be used to describe extensibility in session-typed communication.
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2016